/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ec.edu.espe.ccsoft.mantenimiento.bean;

import ec.edu.espe.ccsoft.mantenimiento.modelos.Mecanico;
import ec.edu.espe.ccsoft.mantenimiento.servicios.MecanicoServicio;
import ec.edu.espe.ccsoft.mantenimiento.utils.ManejoAcciones;
import ec.edu.espe.ccsoft.mantenimiento.utils.Mensajes;
import java.io.Serializable;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Carlos
 */
@ManagedBean
@ViewScoped
public class MecanicoBean extends ManejoAcciones implements Serializable {

    @EJB
    private MecanicoServicio mecanicoServicio;
    private Mecanico mecanico;
    private List<Mecanico> mecanicos;
    private Mensajes mensaje;

    @PostConstruct
    public void init() {
        mecanicos = mecanicoServicio.FindAllMecanico();
        mensaje = new Mensajes();
    }

    public void cargarNuevo() {
        mecanico = new Mecanico();
        super.nuevoRegistro();
    }

    public void cargarModificar() {
        super.modificarRegistro();
    }

    public void cargarDetalle() {
        super.detallesRegistro();
    }

    public void guardar() {
        try {
            Mecanico mecanicoAux = mecanicoServicio.findByCedula(mecanico.getCedula());
            if (mecanicoAux == null) {
                mecanico.setEstado(true);
                mecanico.setFechaCreacion(Calendar.getInstance().getTime());
                this.mecanicoServicio.createMecanico(mecanico);
                mecanicos.add(mecanico);
                mensaje.addMessageSuccefull("Información", "El mecánico ha sido creado con éxito");
                RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
                RequestContext.getCurrentInstance().update("@form");
            } else {
                mensaje.addMessageSuccefull("Error", "Ya existe un mecánico registrado con ese nombre.");
            }
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al crear el País " + e.getMessage());
        }
    }

    public void modificar() {
        try {
            mecanicoServicio.updateMecanico(mecanico);
            if (!mecanico.getEstado()) {
                mecanicos.remove(mecanico);
                mensaje.addMessageSuccefull("Información", "El mecánico ha sido eliminado con éxito");
            } else {
                mensaje.addMessageSuccefull("Información", "El mecánico ha sido modificado con éxito");
            }
            RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
            RequestContext.getCurrentInstance().update("@form");
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al modificar el mecánico " + e.getMessage());
        }
    }

    public Mecanico getMecanico() {
        return mecanico;
    }

    public void setMecanico(Mecanico mecanico) {
        this.mecanico = mecanico;
    }

    public List<Mecanico> getMecanicos() {
        return mecanicos;
    }

    public void setMecanicos(List<Mecanico> mecanicos) {
        this.mecanicos = mecanicos;
    }

}
